Java编程:Intellij IDEA使用log4j输出日志记录完整教程 您所在的位置:网站首页 日志 看玩什么 Java编程:Intellij IDEA使用log4j输出日志记录完整教程

Java编程:Intellij IDEA使用log4j输出日志记录完整教程

2023-08-18 18:29| 来源: 网络整理| 查看: 265

SLF4J

简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它支持各种各样的日志框架。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志框架。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

log4j

Log For Java,Apache的一个开源项目,可以灵活地记录日志信息。可以在运行时弃用日志记录而无需修改应用程序二进制文件,即可以通过编辑Log4j的配置文件控制日志记录行为,灵活配置日志的记录格式、记录级别、输出格式,无需触及应用程序二进制文件。也可以不使用配置文件,通过在代码中配置Log4j环境启用Log4j,但不如配置文件灵活。log4j由三个重要的组件构成:优先级、输出目的地、输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显 示内容。log4j包的设计使得日志语句可以保留在已发布的代码中,不会产生很高的性能成本。日志记录为开发人员提供了应用程序故障的详细上下文。另一方面,测试提供了应用程序的质量保证和信心,记录和测试是互补的,不能混淆二者。log4j的一个显着特征是记录器中的继承概念。使用记录器层次结构,可以很容易地控制以任意精细的粒度输出哪些日志语句,有助于减少记录的输出量和成本。日志输出的目标可以是文件,OutputStream,java.io.Writer,远程log4j服务器,远程Unix Syslog守护程序或许多其他输出目标。

感觉理论有点枯燥,所以参考了几个博客,研究了一下怎么编程使用,下面是两个例子

一、基础Java项目使用log4j

1、创建Java项目

2、下载log4j-1.2.17.zip,解压找到jar文件,将jar文件放在Java项目的src文件夹下

3、导入jar包

4、配置log4j.properties文件:src上右键,new,Resource Bundle,输入文件名,OK

在log4j.properties文件中输入配置信息(网上有很多详解log4j语法的博客):

5、设置日志内容:在src中新建测试类,编程,运行,代码和控制台如下图

输出的日志文件:

二、Maven项目使用log4j Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Eclipse和Intellij idea都有Maven的插件,支持使用Maven构建项目。如果团队使用Maven构建项目,那么不论是否有IDE、或者不论IDE是什么,都不会出现因为换IDE导致的项目结构变化的问题。

1、新建Maven项目

2、点击右下角的Enable Auto-Import,使项目能够自动导入相应的包

3、配置pom.xml文件

org.slf4j slf4j-api 1.7.2 org.slf4j slf4j-log4j12 1.7.2

4、配置log4j.properties文件:在resources文件夹下新建log4j.properties文件(配置信息同上,改下输出路径)

5、设置日志内容:建立测试类

6、编程,运行,结果如下

代码:

##配置文件log4j.properties ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=E://Java//LogTest2//logs/error.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = E://Java//LogTest2//logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 输出ERROR 级别以上的日志到=E://Java//LogTest2//logs/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =E://Java//LogTest2//logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ##测试类 import org.apache.log4j.Logger; public class Test { private static Logger logger = Logger.getLogger(Test.class); public static void main(String[] args) { // 记录debug级别的信息 logger.debug("This is debug message."); // 记录info级别的信息 logger.info("This is info message."); // 记录error级别的信息 logger.error("This is error message."); } }

参考:

https://blog.csdn.net/huwei2003/article/details/76071451https://blog.csdn.net/muyi_amen/article/details/79219181https://www.cnblogs.com/ywlaker/p/6124067.htmlhttps://www.cnblogs.com/haoqipeng/p/java-log4j-slf4j-use.htmlhttp://www.codeceo.com/article/log4j-usage.htmlhttp://logging.apache.org/log4j/1.2/https://segmentfault.com/a/1190000016033592


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有